#ifndef NOTIFICATOR_H
#define NOTIFICATOR_H

#include <QString>
#include <QWidget>
#include <QSharedPointer>
#include <QtPlugin>
#include "notification.h"
#include "misc.h"

namespace Wishmaster
{
	class WISHMASTER_EXPORT Notificator
	{
	public:
		Notificator();
		virtual ~Notificator();

		virtual bool notify(const Notification& notification) = 0;
		virtual QSharedPointer<QWidget> makeConfig() = 0;
		virtual bool updateConfig(const QSharedPointer<QWidget>& config) = 0;
	};

	class WISHMASTER_EXPORT NotificatorFactory
	{
	public:
		virtual ~NotificatorFactory() {}
		virtual QString id() = 0;
		virtual QSharedPointer<Notificator> createNotificator() = 0;
	};
}

Q_DECLARE_INTERFACE(Wishmaster::Notificator, "com.googlecode.wishmaster.Notificator/1.0")
Q_DECLARE_INTERFACE(Wishmaster::NotificatorFactory, "com.googlecode.wishmaster.NotificatorFactory/1.0")

#endif // NOTIFICATOR_H
